iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
Software Development

數位 IC 設計起手式系列 第 5

Day 05: 線路三兩事

  • 分享至 

  • xImage
  •  

既然 Verilog 是硬體描述語言,那麼其中的組成肯定不是單純的變數,如:整數、浮點數、字串等。
Verilog 中最重要的變數是 wire ,翻成中文就是線路!這是 Verilog 中的預設型別。

資料型別

既然他是變數,那麼裡頭就會儲存一些資料嘛。因為是線路,所以基本的數值就是高電位 (1) 與低電位 (0) 。為什麼說是基本的數值呢?因為 wire 還有支援兩種特殊的數值 xz

x 代表的是未知的數值,或是說 x 有機會成為任何數值。如果學過卡諾圖的布林代數化簡,我們會以 x 來表示 don't care ,和這個 x 代表的意義是相近的。

z 代表的是高電阻 (High Impendence),同時也是 wire 的預設數值。高電阻是什麼呢?基本上就是斷路啦!因此這個值當做線路的預設值再合理不過了。

如果不知道為什麼高電阻代表的是斷路,可以聽聽這個比喻:
假設前方有兩條路(A, B)讓你選擇,且兩條路的目的地和所需時間都是相同的 。
A 路線會先爬到海拔 3000 公尺,再向下走到目的地。
B 路線則會繞過高山,走一條很平坦的路到達目的地。
電流的想法跟正常人一樣,能輕鬆地到達,就選輕鬆的路,因此 A 路線是不會有人去選擇的。
既然沒有電流流經,那麼那條路就是斷路!

宣告與賦值

wire 的數值共分成三個部分:<size>'<base format><number>

  • size:代表的是幾條線路,因為我們還未提到多條線路的綁線,因此目前 size 的值只會是 1
  • base format:代表的是這個變數的進制。
    例如,二進位 (binary) 我們會以 bB 表示,八進位 (octal) 會以 oO 表示,十進位 (decimal) 會以 dD 表示,十六進位 (hexadecimal) 會以 hH 表示
  • number:這個變數所代表的數值,且這個數值會以指定的進制表示,因為目前的線路只有 1 條,所以 0 / 1 足以表示。當線路越來越多時,我們可以透過 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 來表示數值。小小提醒,在數值表示上,大小寫視為相同的。

wire 的賦值需要借用關鍵字 assign

// 宣告
wire a, b, c, d;

// 賦值
assign a = 1'b1;
assign b = 1'o1;
assign c = 1'd1;
assign d = 1'h1;

// 上述的例子中, a, b, c, d 代表的數值其實是相等的,都是 1 

上一篇
Day 04: Verilog 環境架設
下一篇
Day 06: Vector 的出現
系列文
數位 IC 設計起手式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言